package com.um.jdy.common.commons.service;

import com.um.jdy.common.member.enums.CodeKey;

/**
 * @author 邓南辉
 * 日期 2023/2/4
 * 版权所有 广州优匠科技有限公司
 */
public interface MobileService {

    /**
     * 发送短信验证码
     *
     * @param prefix
     * @param mobile
     */
    default void sendCode(CodeKey prefix, String mobile) {
        sendCode(prefix, mobile, null);
    }

    /**
     * 发送短信验证码
     *
     * @param prefix
     * @param mobile
     */
    default void sendCode(CodeKey prefix, String mobile, String comId) {
        sendCode(prefix, "+86", mobile, comId, true);
    }

    /**
     * 发送短信验证码
     *
     * @param prefix
     * @param mobileAreaCode
     * @param mobile
     */
    default void sendCode(CodeKey prefix, String mobileAreaCode, String mobile, String comId) {
        sendCode(prefix, mobileAreaCode, mobile, comId, true);
    }

    /**
     * 发送短信验证码
     *
     * @param prefix
     * @param mobileAreaCode
     * @param mobile
     * @param code
     */
    void sendCode(CodeKey prefix, String mobileAreaCode, String mobile, String code, String comId);

    /**
     * 发送短信验证码，不加时间限制
     *
     * @param prefix
     * @param mobileAreaCode
     * @param mobile
     */
    void sendCode(CodeKey prefix, String mobileAreaCode, String mobile, String comId, boolean cache);

    /**
     * 检查短信验证码
     *
     * @param prefix
     * @param mobile
     * @param mobileCode
     * @return
     */
    default boolean checkCode(CodeKey prefix, String mobile, String mobileCode) {
        return checkCode(prefix, "+86", mobile, mobileCode);
    }

    /**
     * 检查短信验证码
     *
     * @param prefix
     * @param mobileAreaCode
     * @param mobile
     * @param mobileCode
     * @return
     */
    boolean checkCode(CodeKey prefix, String mobileAreaCode, String mobile, String mobileCode);

    /**
     * 废弃验证码
     *
     * @param prefix
     * @param mobile
     */
    default void expireCode(CodeKey prefix, String mobile) {
        expireCode(prefix, "+86", mobile);
    }

    /**
     * 废弃验证码
     *
     * @param prefix
     * @param mobileAreaCode
     * @param mobile
     */
    void expireCode(CodeKey prefix, String mobileAreaCode, String mobile);
}
